iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
0
自我挑戰組

不要太認真學 Python! 之 我又重新報名了系列 第 9

不要太認真學 Python! - Day 12

  • 分享至 

  • xImage
  •  

[前情提要]

大前天(Day 9)第一次完成了顯示點數六點與下方點數對應所要執行的動作後,前天(Day 10)發現點數和動作可以顯示了,但是兩個項目對不起來。

經友人指點,發現我的程式碼真的是非常混亂,一點都不工整。雖然我知道自己的程式碼不工整,但是我也不知道怎樣才是工整的程式碼。因此,我決定靜下心來、砍掉重練,一行一行檢視我的程式碼。

我覺得這個過程很重要,因為這就是一個重整思路的過程。於是,我改成了下方的樣子。

from random import randint

class Status:
    WON = 6
    CONTINUE =  [1, 2, 3, 4, 5]
    
def dice():
    return randint(1, 6)
if dice()==1:
    result='唱歌'
    print('唱歌')
elif dice()==2:
    result = '蘿蔔蹲'
    print('蘿蔔蹲')
elif dice()==3:
    result='青蛙跳'
    print('青蛙跳')
elif dice()==4:
    result='喝苦茶'
    print('喝苦茶')
elif dice()==5:
    result='仰臥起坐'
    print('仰臥起坐')
else:
    dice()==6
    result='當我藍/鋁朋友'
    print('當我藍/鋁朋友')
    
def initialRoll(firstPoint):
    if firstPoint in [6]:
        print("這肯定是命中註定誒!!!" )
    elif firstPoint in [1, 2, 3, 4, 5]:
        return Status.CONTINUE
    print("再丟一次骰子,上帝會指引你的)光芒")

然後,又到了死線了。
先發文,後補齊吧。

順便先說,中秋節快樂!!
感謝有看我發這麼廢的文的人,我真的非常感謝你們,雖然文章看起來真的很沒用,但是對我自己是有很多幫助。因為我都是一邊研究一邊寫文,所以總是壓死線。

我寫文是很快,但是研究花了非常多時間,很開心自己寫文的時間很短,學習的時間比較多。這應該也是這個比賽成立的初衷之一吧,如果哪天我變得很會寫,但是研究時間變短了,我覺得應該會有點難過,希望自己能一直維持下去。

好的,感性的話不說了,我要來去補文了。

中秋節有活動嗎?

https://ithelp.ithome.com.tw/upload/images/20190914/20120423m2lc4mpRLQ.jpg


我最後整理的版本是下面這樣:

from random import randint

def dice():
    return randint(1, 6)
print ('玩家搖出了[%d]點' % dice())

if dice()==1:
    result='唱歌'
elif dice()==2:
    result = '蘿蔔蹲'
elif dice()==3:
    result='青蛙跳'
elif dice()==4:
    result='喝苦茶'
elif dice()==5:
    result='仰臥起坐'
else:
    dice()==6
    result='當我藍/鋁朋友'
    
print (result)
    
class Status:
    WON = 6
    CONTINUE =  [1, 2, 3, 4, 5]
    
def initialRoll(firstPoint):
    if firstPoint in [6]:
        print("這肯定是命中註定誒!!!" )
    else:
        print("再丟一次骰子,上帝會指引你的)光芒")
        return Status.CONINUE

我自己憑感覺覺得似乎比較整齊一點點(?

雖然點數和執行動作仍然對不上,但是我覺得似乎有發現問題點了。

  1. 第一種可能:點數和執行動作沒有連結在一起

也就是說,變成兩組骰子遊戲,點數歸點數,動作歸動作。總覺得應該要把它變成像一個模組之類的,那專有名詞是什麼我不知道,總之就是如果點數是一個方塊,執行動作是另一個方塊,照理來說應該要兩個合在一起變成一個方塊,但是現在有兩個,所以各自為政,無法正確執行。

  1. 第二種可能:def dice(): return randint(1, 6) print ('玩家搖出了[%d]點' % dice()) 這行出了問題

總覺得這行應該不是這樣寫,應該有其他寫法,是定義下錯了嗎?還是%d那裡出了問題。

我覺得應該要朝向下面幾個關鍵字去研究 string 、 while 、for...in range、%s。

真想知道大家都是怎麼學程式的,是一步一步跟著老師的指令操作一次,還是像我這樣異想天開,先想說要做什麼,然後再想辦法達成,或是其他學習方式。因為覺得自己似乎是越級打怪!?)哭笑不得

https://ithelp.ithome.com.tw/upload/images/20190914/20120423LCAO9Mz41M.jpg
https://ithelp.ithome.com.tw/upload/images/20190914/20120423N2kil7LqAz.png

中秋月圓跟骰子還沒有緣QQ
明天再戰
收工


不要太認真學 Python! - Day 11


上一篇
不要太認真學 Python! - Day 11
下一篇
不要太認真學 Python! - Day 13
系列文
不要太認真學 Python! 之 我又重新報名了31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
def dice():
    return randint(1, 6)

是每次呼叫到它就會給你一個隨機啦!
應該要把

if dice()==1: #  <- 重複執行了randint
    result='唱歌'
elif dice()==2: #  <- 重複執行了randint
    result = '蘿蔔蹲'
elif dice()==3: #  <- 重複執行了randint
    result='青蛙跳'
elif dice()==4: #  <- 重複執行了randint
    result='喝苦茶'
elif dice()==5: #  <- 重複執行了randint
    result='仰臥起坐'
else:
    dice()==6 #  <- 沒有意義,可以改成print(dice()==6) 看看長什麼樣子
    result='當我藍/鋁朋友'

改成用個變數先存起來一次隨機的值

x = dice()

if x==1:
    result='唱歌'
elif x==2:
    result = '蘿蔔蹲'
elif x==3:
    result='青蛙跳'
elif x==4:
    result='喝苦茶'
elif x==5:
    result='仰臥起坐'
elif x==6:
    result='當我藍/鋁朋友'
else: # <- 這個不用給條件,也可有可無
    result = '不太可能會走到這邊,除非硬體計算出錯'

之類的比較合理,不然就是賭運氣而已XD
幫你算算你原本可以走到最後面的機率 : 5/6 * 5/6 * 5/6 * 5/6 * 5/6 = 40.2%

RGB iT邦新手 5 級 ‧ 2019-09-15 08:55:08 檢舉

囧 我還真沒有想到會有數學式子出現...

我原本真的想用運氣誒,就是隨機跳出來,然後研究怎麼讓他在我想要的數字停下來@@

你這個方法我來思考一下,畢竟會算出來感覺就不好玩了)笑哭

機率就是運氣了啦XD 本來就是隨機的,我的寫法到最後面的機率是1/6約是16.67%啦!

你的寫法只是會在每次判斷又多隨機一次XD 所以你才會覺得怎麼print的數字跟實際判斷的數字不一樣 哈哈哈

我要留言

立即登入留言